home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / AIncludes / FSM.a < prev    next >
Encoding:
Text File  |  1997-08-12  |  39.3 KB  |  1,269 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        FSM.a
  3. ;
  4. ;    Contains:    HFS External File System Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Release:    Universal Interfaces 3.0.1
  8. ;
  9. ;    Copyright:    © 1985-1997 by Apple Computer, Inc., all rights reserved
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__FSM__') = 'UNDEFINED' THEN
  19. __FSM__ SET 1
  20.  
  21.     IF &TYPE('__FILES__') = 'UNDEFINED' THEN
  22.     include 'Files.a'
  23.     ENDIF
  24.  
  25. ;  VolMount declarations are now in Files.≈ 
  26.  
  27. ; * Miscellaneous file system values not in Files.≈
  28.  
  29.  
  30. fsUsrCNID                        EQU        16                    ; First assignable directory or file number 
  31.                                                             ;    File system trap word attribute bits 
  32. kHFSBit                            EQU        9                    ; HFS call: bit 9 
  33. kHFSMask                        EQU        $0200
  34. kAsyncBit                        EQU        10                    ; Asynchronous call: bit 10 
  35. kAsyncMask                        EQU        $0400
  36.  
  37. ; * HFSCIProc selectCode values
  38. ; * Note: The trap attribute bits (the HFS bit and the asynchronous bit)
  39. ; * may be set in these selectCode values.
  40.  
  41.  
  42. kFSMOpen                        EQU        $A000
  43. kFSMClose                        EQU        $A001
  44. kFSMRead                        EQU        $A002
  45. kFSMWrite                        EQU        $A003
  46. kFSMGetVolInfo                    EQU        $A007
  47. kFSMCreate                        EQU        $A008
  48. kFSMDelete                        EQU        $A009
  49. kFSMOpenRF                        EQU        $A00A
  50. kFSMRename                        EQU        $A00B
  51. kFSMGetFileInfo                    EQU        $A00C
  52. kFSMSetFileInfo                    EQU        $A00D
  53. kFSMUnmountVol                    EQU        $A00E
  54. kFSMMountVol                    EQU        $A00F
  55. kFSMAllocate                    EQU        $A010
  56. kFSMGetEOF                        EQU        $A011
  57. kFSMSetEOF                        EQU        $A012
  58. kFSMFlushVol                    EQU        $A013
  59. kFSMGetVol                        EQU        $A014
  60. kFSMSetVol                        EQU        $A015
  61. kFSMEject                        EQU        $A017
  62. kFSMGetFPos                        EQU        $A018
  63. kFSMOffline                        EQU        $A035
  64. kFSMSetFilLock                    EQU        $A041
  65. kFSMRstFilLock                    EQU        $A042
  66. kFSMSetFilType                    EQU        $A043
  67. kFSMSetFPos                        EQU        $A044
  68. kFSMFlushFile                    EQU        $A045                ;    The File System HFSDispatch selectCodes 
  69. kFSMOpenWD                        EQU        $0001
  70. kFSMCloseWD                        EQU        $0002
  71. kFSMCatMove                        EQU        $0005
  72. kFSMDirCreate                    EQU        $0006
  73. kFSMGetWDInfo                    EQU        $0007
  74. kFSMGetFCBInfo                    EQU        $0008
  75. kFSMGetCatInfo                    EQU        $0009
  76. kFSMSetCatInfo                    EQU        $000A
  77. kFSMSetVolInfo                    EQU        $000B
  78. kFSMLockRng                        EQU        $0010
  79. kFSMUnlockRng                    EQU        $0011
  80. kFSMXGetVolInfo                    EQU        $0012
  81. kFSMCreateFileIDRef                EQU        $0014
  82. kFSMDeleteFileIDRef                EQU        $0015
  83. kFSMResolveFileIDRef            EQU        $0016
  84. kFSMExchangeFiles                EQU        $0017
  85. kFSMCatSearch                    EQU        $0018
  86. kFSMOpenDF                        EQU        $001A
  87. kFSMMakeFSSpec                    EQU        $001B                ;    The Desktop Manager HFSDispatch selectCodes 
  88. kFSMDTGetPath                    EQU        $0020
  89. kFSMDTCloseDown                    EQU        $0021
  90. kFSMDTAddIcon                    EQU        $0022
  91. kFSMDTGetIcon                    EQU        $0023
  92. kFSMDTGetIconInfo                EQU        $0024
  93. kFSMDTAddAPPL                    EQU        $0025
  94. kFSMDTRemoveAPPL                EQU        $0026
  95. kFSMDTGetAPPL                    EQU        $0027
  96. kFSMDTSetComment                EQU        $0028
  97. kFSMDTRemoveComment                EQU        $0029
  98. kFSMDTGetComment                EQU        $002A
  99. kFSMDTFlush                        EQU        $002B
  100. kFSMDTReset                        EQU        $002C
  101. kFSMDTGetInfo                    EQU        $002D
  102. kFSMDTOpenInform                EQU        $002E
  103. kFSMDTDelete                    EQU        $002F                ;    The AppleShare HFSDispatch selectCodes 
  104. kFSMGetVolParms                    EQU        $0030
  105. kFSMGetLogInInfo                EQU        $0031
  106. kFSMGetDirAccess                EQU        $0032
  107. kFSMSetDirAccess                EQU        $0033
  108. kFSMMapID                        EQU        $0034
  109. kFSMMapName                        EQU        $0035
  110. kFSMCopyFile                    EQU        $0036
  111. kFSMMoveRename                    EQU        $0037
  112. kFSMOpenDeny                    EQU        $0038
  113. kFSMOpenRFDeny                    EQU        $0039
  114. kFSMGetXCatInfo                    EQU        $003A
  115. kFSMGetVolMountInfoSize            EQU        $003F
  116. kFSMGetVolMountInfo                EQU        $0040
  117. kFSMVolumeMount                    EQU        $0041
  118. kFSMShare                        EQU        $0042
  119. kFSMUnShare                        EQU        $0043
  120. kFSMGetUGEntry                    EQU        $0044
  121. kFSMGetForeignPrivs                EQU        $0060
  122. kFSMSetForeignPrivs                EQU        $0061
  123. ; * UTDetermineVol status values
  124.  
  125.  
  126. dtmvError                        EQU        0                    ; param error 
  127. dtmvFullPathame                    EQU        1                    ; determined by full pathname 
  128. dtmvVRefNum                        EQU        2                    ; determined by volume refNum 
  129. dtmvWDRefNum                    EQU        3                    ; determined by working directory refNum 
  130. dtmvDriveNum                    EQU        4                    ; determined by drive number 
  131. dtmvDefault                        EQU        5                    ; determined by default volume 
  132.  
  133. ; * UTGetBlock options
  134.  
  135.  
  136. gbDefault                        EQU        0                    ; default value - read if not found 
  137.                                                             ;    bits and masks 
  138. gbReadBit                        EQU        0                    ; read block from disk (forced read) 
  139. gbReadMask                        EQU        $0001
  140. gbExistBit                        EQU        1                    ; get existing cache block 
  141. gbExistMask                        EQU        $0002
  142. gbNoReadBit                        EQU        2                    ; don't read block from disk if not found in cache 
  143. gbNoReadMask                    EQU        $0004
  144. gbReleaseBit                    EQU        3                    ; release block immediately after GetBlock 
  145. gbReleaseMask                    EQU        $0008
  146.  
  147. ; * UTReleaseBlock options
  148.  
  149.  
  150. rbDefault                        EQU        0                    ; default value - just mark the buffer not in-use 
  151.                                                             ;    bits and masks 
  152. rbWriteBit                        EQU        0                    ; force write buffer to disk 
  153. rbWriteMask                        EQU        $0001
  154. rbTrashBit                        EQU        1                    ; trash buffer contents after release 
  155. rbTrashMask                        EQU        $0002
  156. rbDirtyBit                        EQU        2                    ; mark buffer dirty 
  157. rbDirtyMask                        EQU        $0004
  158. rbFreeBit                        EQU        3                    ; free the buffer (save in the hash) 
  159. rbFreeMask                        EQU        $000A                ; rbFreeMask (rbFreeBit + rbTrashBit) works as rbTrash on < System 7.0 RamCache; on >= System 7.0, rbfreeMask overrides rbTrash 
  160.  
  161. ; * UTFlushCache options
  162.  
  163.  
  164. fcDefault                        EQU        0                    ; default value - pass this fcOption to just flush any dirty buffers 
  165.                                                             ;    bits and masks 
  166. fcTrashBit                        EQU        0                    ; (don't pass this as fcOption, use only for testing bit) 
  167. fcTrashMask                        EQU        $0001                ; pass this fcOption value to flush and trash cache blocks 
  168. fcFreeBit                        EQU        1                    ; (don't pass this as fcOption, use only for testing bit) 
  169. fcFreeMask                        EQU        $0003                ; pass this fcOption to flush and free cache blocks (Note: both fcTrash and fcFree bits are set) 
  170.  
  171. ; * UTCacheReadIP and UTCacheWriteIP cacheOption
  172.  
  173.  
  174. noCacheBit                        EQU        5                    ; don't cache this please 
  175. noCacheMask                        EQU        $0020
  176. rdVerifyBit                        EQU        6                    ; read verify 
  177. rdVerifyMask                    EQU        $0040
  178.  
  179. ; * Cache routine internal error codes
  180.  
  181.  
  182. chNoBuf                            EQU        1                    ; no free cache buffers (all in use) 
  183. chInUse                            EQU        2                    ; requested block in use 
  184. chnotfound                        EQU        3                    ; requested block not found 
  185. chNotInUse                        EQU        4                    ; block being released was not in use 
  186.  
  187. ; * FCBRec.fcbFlags bits
  188.  
  189.  
  190. fcbWriteBit                        EQU        0                    ; Data can be written to this file 
  191. fcbWriteMask                    EQU        $01
  192. fcbResourceBit                    EQU        1                    ; This file is a resource fork 
  193. fcbResourceMask                    EQU        $02
  194. fcbWriteLockedBit                EQU        2                    ; File has a locked byte range 
  195. fcbWriteLockedMask                EQU        $04
  196. fcbSharedWriteBit                EQU        4                    ; File is open for shared write access 
  197. fcbSharedWriteMask                EQU        $10
  198. fcbFileLockedBit                EQU        5                    ; File is locked (write-protected) 
  199. fcbFileLockedMask                EQU        $20
  200. fcbOwnClumpBit                    EQU        6                    ; File has clump size specified in FCB 
  201. fcbOwnClumpMask                    EQU        $40
  202. fcbModifiedBit                    EQU        7                    ; File has changed since it was last flushed 
  203. fcbModifiedMask                    EQU        $80
  204.  
  205. ; * ExtFileProc options
  206.  
  207.  
  208. extendFileAllBit                EQU        0                    ; allocate all requested bytes or none 
  209. extendFileAllMask                EQU        $0001
  210. extendFileContigBit                EQU        1                    ; force contiguous allocation 
  211. extendFileContigMask            EQU        $0002
  212.  
  213. ; *    HFS Component Interface constants
  214.  
  215.  
  216. ; * compInterfMask bits specific to HFS component
  217.  
  218.  
  219. hfsCIDoesHFSBit                    EQU        23                    ; set if file system supports HFS calls 
  220. hfsCIDoesHFSMask                EQU        $00800000
  221. hfsCIDoesAppleShareBit            EQU        22                    ; set if AppleShare calls supported 
  222. hfsCIDoesAppleShareMask            EQU        $00400000
  223. hfsCIDoesDeskTopBit                EQU        21                    ; set if Desktop Database calls supported 
  224. hfsCIDoesDeskTopMask            EQU        $00200000
  225. hfsCIDoesDynamicLoadBit            EQU        20                    ; set if dynamically loading code resource 
  226. hfsCIDoesDynamicLoadMask        EQU        $00100000            ;        supported 
  227. hfsCIResourceLoadedBit            EQU        19                    ; set if code resource already loaded 
  228. hfsCIResourceLoadedMask            EQU        $00080000
  229. hfsCIHasHLL2PProcBit            EQU        18                    ; set if FFS' log2PhyProc and Extendfile proc 
  230. hfsCIHasHLL2PProcMask            EQU        $00040000            ; is written in a high level language. (i.e., uses Pascal calling convention) 
  231. hfsCIWantsDTSupportBit            EQU        17                    ; set if FFS wants the Mac OS's Desktop Manager code to handle 
  232. hfsCIWantsDTSupportMask            EQU        $00020000            ; all Desktop Manager requests to its volumes. 
  233.  
  234. ; *    Disk Initialization Component Interface constants
  235.  
  236.  
  237. ; * compInterfMask bits specific to Disk Initialization component
  238.  
  239.  
  240. diCIHasExtFormatParamsBit        EQU        18                    ; set if file system needs extended format 
  241. diCIHasExtFormatParamsMask        EQU        $00040000            ;        parameters 
  242. diCIHasMultiVolTypesBit            EQU        17                    ; set if file system supports more than one 
  243. diCIHasMultiVolTypesMask        EQU        $00020000            ;        volume type 
  244. diCIDoesSparingBit                EQU        16                    ; set if file system supports disk sparing 
  245. diCIDoesSparingMask                EQU        $00010000
  246. diCILiveBit                        EQU        0                    ; set if file system is candidate for current 
  247. diCILiveMask                    EQU        $00000001            ;        formatting operation (set by PACK2) 
  248.  
  249. ; * Disk Initialization Component Function selectors
  250.  
  251.  
  252. diCILoad                        EQU        1                    ; Make initialization code memory resident 
  253. diCIUnload                        EQU        2                    ; Make initialization code purgeable 
  254. diCIEvaluateSizeChoices            EQU        3                    ; Evaluate size choices 
  255. diCIExtendedZero                EQU        4                    ; Write an empty volume directory 
  256. diCIValidateVolName                EQU        5                    ; Validate volume name 
  257. diCIGetVolTypeInfo                EQU        6                    ; get volume type info 
  258. diCIGetFormatString                EQU        7                    ; get dialog format string 
  259. diCIGetExtFormatParams            EQU        8                    ; get extended format parameters 
  260. diCIGetDefectList                EQU        9                    ; return the defect list for the indicated disk - reserved for future use 
  261.  
  262. ; * Constants used in the DICIEvaluateSizeRec and FormatListRec
  263.  
  264.  
  265. diCIFmtListMax                    EQU        8                    ; maximum number of format list entries in DICIEvaluateSizeRec.numSizeEntries 
  266.                                                             ;    bits in FormatListRec.formatFlags: 
  267. diCIFmtFlagsValidBit            EQU        7                    ; set if sec, side, tracks valid 
  268. diCIFmtFlagsValidMask            EQU        $80
  269. diCIFmtFlagsCurrentBit            EQU        6                    ; set if current disk has this fmt 
  270. diCIFmtFlagsCurrentMask            EQU        $40                    ;    bits in FormatListRec.sizeListFlags: 
  271. diCISizeListOKBit                EQU        15                    ; set if this disk size usable 
  272. diCISizeListOKMask                EQU        $8000
  273.  
  274. ; * DICIGetFormatStringRec.stringKind format strings
  275.  
  276.  
  277. diCIAlternateFormatStr            EQU        1                    ; get alternate format  string (Balloon Help) 
  278. diCISizePresentationStr            EQU        2                    ; get size presentation string (for dialog) 
  279.  
  280. ; * Error codes returned by Disk Sparing
  281.  
  282.  
  283. diCIUserCancelErr                EQU        1                    ; user cancelled the disk init 
  284. diCICriticalSectorBadErr        EQU        20                    ; critical sectors are bad (hopeless)    
  285. diCISparingFailedErr            EQU        21                    ; disk cannot be spared 
  286. diCITooManyBadSectorsErr        EQU        22                    ; too many bad sectors 
  287. diCIUnknownVolTypeErr            EQU        23                    ; the volume type passed in diCIExtendedZero paramBlock is not supported 
  288. diCIVolSizeMismatchErr            EQU        24                    ; specified volume size doesn’t match with formatted disk size 
  289. diCIUnknownDICallErr            EQU        25                    ; bogus DI function call selector 
  290. diCINoSparingErr                EQU        26                    ; disk is bad but the target FS doesn't do disk sparing 
  291. diCINoExtendInfoErr                EQU        27                    ; missing file system specific extra parameter in diCIExtendedZero call 
  292. diCINoMessageTextErr            EQU        28                    ; missing message text in DIReformat call 
  293.  
  294. ; *    File System Manager constants
  295.  
  296.  
  297. ; * Miscellaneous constants used by FSM
  298.  
  299.  
  300. fsdVersion1                        EQU        1                    ; current version of FSD record 
  301. fsmIgnoreFSID                    EQU        $FFFE                ; this FSID should be ignored by the driver 
  302. fsmGenericFSID                    EQU        $FFFF                ; unknown foreign file system ID 
  303.  
  304. ; * compInterfMask bits common to all FSM components
  305.  
  306.  
  307. fsmComponentEnableBit            EQU        31                    ; set if FSM component interface is enabled 
  308. fsmComponentEnableMask            EQU        $80000000
  309. fsmComponentBusyBit                EQU        30                    ; set if FSM component interface is busy 
  310. fsmComponentBusyMask            EQU        $40000000
  311.  
  312. ; * Selectors for GetFSInfo
  313.  
  314.  
  315. fsmGetFSInfoByIndex                EQU        -1                    ; get fs info by index 
  316. fsmGetFSInfoByFSID                EQU        0                    ; get fs info by FSID 
  317. fsmGetFSInfoByRefNum            EQU        1                    ; get fs info by file/vol refnum 
  318.  
  319. ; * InformFSM messages
  320.  
  321.  
  322. fsmNopMessage                    EQU        0                    ; nop 
  323. fsmDrvQElChangedMessage            EQU        1                    ; DQE has changed 
  324. fsmGetFSIconMessage                EQU        2                    ; Get FFS's disk icon 
  325.  
  326. ; * Messages passed to the fileSystemCommProc
  327.  
  328.  
  329. ffsNopMessage                    EQU        0                    ; nop, should always return noErr 
  330. ffsGetIconMessage                EQU        1                    ; return disk icon and mask 
  331. ffsIDDiskMessage                EQU        2                    ; identify the about-to-be-mounted volume 
  332. ffsLoadMessage                    EQU        3                    ; load in the FFS 
  333. ffsUnloadMessage                EQU        4                    ; unload the FFS 
  334. ffsIDVolMountMessage            EQU        5                    ; identify a VolMountInfo record 
  335. ffsInformMessage                EQU        6                    ; FFS defined message 
  336. ffsGetIconInfoMessage            EQU        7
  337.  
  338. ; * Error codes from FSM functions
  339.  
  340.  
  341. fsmFFSNotFoundErr                EQU        -431                ; Foreign File system does not exist - new Pack2 could return this error too 
  342. fsmBusyFFSErr                    EQU        -432                ; File system is busy, cannot be removed 
  343. fsmBadFFSNameErr                EQU        -433                ; Name length not 1 <= length <= 31 
  344. fsmBadFSDLenErr                    EQU        -434                ; FSD size incompatible with current FSM vers 
  345. fsmDuplicateFSIDErr                EQU        -435                ; FSID already exists on InstallFS 
  346. fsmBadFSDVersionErr                EQU        -436                ; FSM version incompatible with FSD 
  347. fsmNoAlternateStackErr            EQU        -437                ; no alternate stack for HFS CI 
  348. fsmUnknownFSMMessageErr            EQU        -438                ; unknown message passed to FSM 
  349.  
  350. ; *    HFS Utility routine records
  351.  
  352.  
  353. ; * record used by UTGetPathComponentName
  354.  
  355. ParsePathRec            RECORD 0
  356. namePtr                     ds.l    1                ; offset: $0 (0)        ;  pathname to parse 
  357. startOffset                 ds.w    1                ; offset: $4 (4)        ;  where to start parsing 
  358. componentLength             ds.w    1                ; offset: $6 (6)        ;  the length of the pathname component parsed 
  359. moreName                 ds.b    1                ; offset: $8 (8)        ;  non-zero if there are more components after this one 
  360. foundDelimiter             ds.b    1                ; offset: $9 (9)        ;  non-zero if parsing stopped because a colon (:) delimiter was found 
  361. sizeof                     EQU *                    ; size:   $A (10)
  362.                         ENDR
  363. ; typedef struct ParsePathRec *            ParsePathRecPtr
  364.  
  365. WDCBRec                    RECORD 0
  366. wdVCBPtr                 ds.l    1                ; offset: $0 (0)        ;  Pointer to VCB of this working directory 
  367. wdDirID                     ds.l    1                ; offset: $4 (4)        ;  Directory ID number of this working directory 
  368. wdCatHint                 ds.l    1                ; offset: $8 (8)        ;  Hint for finding this working directory 
  369. wdProcID                 ds.l    1                ; offset: $C (12)        ;  Process that created this working directory 
  370. sizeof                     EQU *                    ; size:   $10 (16)
  371.                         ENDR
  372. ; typedef struct WDCBRec *                WDCBRecPtr
  373.  
  374. FCBRec                    RECORD 0
  375. fcbFlNm                     ds.l    1                ; offset: $0 (0)        ;  FCB file number. Non-zero marks FCB used 
  376. fcbFlags                 ds.b    1                ; offset: $4 (4)        ;  FCB flags 
  377. fcbTypByt                 ds.b    1                ; offset: $5 (5)        ;  File type byte 
  378. fcbSBlk                     ds.w    1                ; offset: $6 (6)        ;  File start block (in alloc size blks) 
  379. fcbEOF                     ds.l    1                ; offset: $8 (8)        ;  Logical length or EOF in bytes 
  380. fcbPLen                     ds.l    1                ; offset: $C (12)        ;  Physical file length in bytes 
  381. fcbCrPs                     ds.l    1                ; offset: $10 (16)        ;  Current position within file 
  382. fcbVPtr                     ds.l    1                ; offset: $14 (20)        ;  Pointer to the corresponding VCB 
  383. fcbBfAdr                 ds.l    1                ; offset: $18 (24)        ;  File's buffer address 
  384. fcbFlPos                 ds.w    1                ; offset: $1C (28)        ;  Directory block this file is in 
  385. ;  FCB Extensions for HFS 
  386. fcbClmpSize                 ds.l    1                ; offset: $1E (30)        ;  Number of bytes per clump 
  387. fcbBTCBPtr                 ds.l    1                ; offset: $22 (34)        ;  Pointer to B*-Tree control block for file 
  388. fcbExtRec                 ds.l    3                ; offset: $26 (38)        ;  First 3 file extents 
  389. fcbFType                 ds.l    1                ; offset: $32 (50)        ;  File's 4 Finder Type bytes 
  390. fcbCatPos                 ds.l    1                ; offset: $36 (54)        ;  Catalog hint for use on Close 
  391. fcbDirID                 ds.l    1                ; offset: $3A (58)        ;  Parent Directory ID 
  392. fcbCName                 ds        Str31            ; offset: $3E (62)        ;  CName of open file 
  393. sizeof                     EQU *                    ; size:   $5E (94)
  394.                         ENDR
  395. ; typedef struct FCBRec *                FCBRecPtr
  396.  
  397. ; *    HFS Component Interface records
  398.  
  399. HFSCIRec                RECORD 0
  400. compInterfMask             ds.l    1                ; offset: $0 (0)        ;  component flags 
  401. compInterfProc             ds.l    1                ; offset: $4 (4)        ;  pointer to file system call processing code 
  402. log2PhyProc                 ds.l    1                ; offset: $8 (8)        ;  pointer to Lg2PhysProc() code 
  403. stackTop                 ds.l    1                ; offset: $C (12)        ;  file system stack top 
  404. stackSize                 ds.l    1                ; offset: $10 (16)        ;  file system stack size 
  405. stackPtr                 ds.l    1                ; offset: $14 (20)        ;  current file system stack pointer 
  406. reserved3                 ds.l    1                ; offset: $18 (24)        ;  --reserved, must be zero-- 
  407. idSector                 ds.l    1                ; offset: $1C (28)        ;  Sector you need to ID a local volume. For networked volumes, this must be -1 
  408. reserved2                 ds.l    1                ; offset: $20 (32)        ;  --reserved, must be zero-- 
  409. reserved1                 ds.l    1                ; offset: $24 (36)        ;  --reserved, must be zero-- 
  410. sizeof                     EQU *                    ; size:   $28 (40)
  411.                         ENDR
  412. ; typedef struct HFSCIRec *                HFSCIRecPtr
  413.  
  414. ; *    Disk Initialization Component Interface records
  415.  
  416. DICIRec                    RECORD 0
  417. compInterfMask             ds.l    1                ; offset: $0 (0)        ;  component flags 
  418. compInterfProc             ds.l    1                ; offset: $4 (4)        ;  pointer to call processing code 
  419. maxVolNameLength         ds.w    1                ; offset: $8 (8)        ;  maximum length of your volume name 
  420. blockSize                 ds.w    1                ; offset: $A (10)        ;  your file system's block size 
  421. reserved3                 ds.l    1                ; offset: $C (12)        ;  --reserved, must be zero-- 
  422. reserved2                 ds.l    1                ; offset: $10 (16)        ;  --reserved, must be zero-- 
  423. reserved1                 ds.l    1                ; offset: $14 (20)        ;  --reserved, must be zero-- 
  424. sizeof                     EQU *                    ; size:   $18 (24)
  425.                         ENDR
  426. ; typedef struct DICIRec *                DICIRecPtr
  427.  
  428. ; * FormatListRec as returned by the .Sony disk driver's
  429. ; * Return Format List status call (csCode = 6).
  430. ; * If the status call to get this list for a drive is not
  431. ; * implemented by the driver, then a list with one entry
  432. ; * is contructed from the drive queue element for the drive.
  433.  
  434. FormatListRec            RECORD 0
  435. volSize                     ds.l    1                ; offset: $0 (0)        ;  disk capacity in SECTORs 
  436. formatFlags                 ds.b    1                ; offset: $4 (4)        ;  flags 
  437. sectorsPerTrack             ds.b    1                ; offset: $5 (5)        ;  sectors per track side 
  438. tracks                     ds.w    1                ; offset: $6 (6)        ;  number of tracks 
  439. sizeof                     EQU *                    ; size:   $8 (8)
  440.                         ENDR
  441. ; typedef struct FormatListRec *        FormatListRecPtr
  442.  
  443. ; * SizeListRec built from FormatListRecs as described above.
  444.  
  445. SizeListRec                RECORD 0
  446. sizeListFlags             ds.w    1                ; offset: $0 (0)        ;  flags as set by external file system 
  447. sizeEntry                 ds        FormatListRec    ; offset: $2 (2)        ;  disk driver format list record 
  448. sizeof                     EQU *                    ; size:   $A (10)
  449.                         ENDR
  450. ; typedef struct SizeListRec *            SizeListRecPtr
  451.  
  452. ; * paramBlock for the diCIEvaluateSize call
  453.  
  454. DICIEvaluateSizeRec        RECORD 0
  455. defaultSizeIndex         ds.w    1                ; offset: $0 (0)        ;  default size for this FS 
  456. numSizeEntries             ds.w    1                ; offset: $2 (2)        ;  number of size entries 
  457. driveNumber                 ds.w    1                ; offset: $4 (4)        ;  drive number 
  458. sizeListPtr                 ds.l    1                ; offset: $6 (6)        ;  ptr to size entry table 
  459. sectorSize                 ds.w    1                ; offset: $A (10)        ;  bytes per sector 
  460. sizeof                     EQU *                    ; size:   $C (12)
  461.                         ENDR
  462. ; typedef struct DICIEvaluateSizeRec *    DICIEvaluateSizeRecPtr
  463.  
  464. ; * paramBlock for the diCIExtendedZero call
  465.  
  466. DICIExtendedZeroRec        RECORD 0
  467. driveNumber                 ds.w    1                ; offset: $0 (0)        ;  drive number 
  468. volNamePtr                 ds.l    1                ; offset: $2 (2)        ;  ptr to volume name string 
  469. fsid                     ds.w    1                ; offset: $6 (6)        ;  file system ID 
  470. volTypeSelector             ds.w    1                ; offset: $8 (8)        ;  volume type selector, if supports more than 1 type 
  471. numDefectBlocks             ds.w    1                ; offset: $A (10)        ;  number of bad logical blocks 
  472. defectListSize             ds.w    1                ; offset: $C (12)        ;  size of the defect list buffer in bytes 
  473. defectListPtr             ds.l    1                ; offset: $E (14)        ;  pointer to defect list buffer 
  474. volSize                     ds.l    1                ; offset: $12 (18)        ;  size of volume in SECTORs 
  475. sectorSize                 ds.w    1                ; offset: $16 (22)        ;  bytes per sector 
  476. extendedInfoPtr             ds.l    1                ; offset: $18 (24)        ;  ptr to extended info 
  477. sizeof                     EQU *                    ; size:   $1C (28)
  478.                         ENDR
  479. ; typedef struct DICIExtendedZeroRec *    DICIExtendedZeroRecPtr
  480.  
  481. ; * paramBlock for the diCIValidateVolName call
  482.  
  483. DICIValidateVolNameRec    RECORD 0
  484. theChar                     ds.b    1                ; offset: $0 (0)        ;  the character to validate 
  485. hasMessageBuffer         ds.b    1                ; offset: $1 (1)        ;  false if no message 
  486. charOffset                 ds.w    1                ; offset: $2 (2)        ;  position of the current character (first char = 1) 
  487. messageBufferPtr         ds.l    1                ; offset: $4 (4)        ;  pointer to message buffer or nil 
  488. charByteType             ds.w    1                ; offset: $8 (8)        ;  theChar's byte type (smSingleByte, smFirstByte, or smLastByte) 
  489. sizeof                     EQU *                    ; size:   $A (10)
  490.                         ENDR
  491. ; typedef struct DICIValidateVolNameRec * DICIValidateVolNameRecPtr
  492.  
  493. ; * paramBlock for the diCIGetVolTypeInfo call
  494.  
  495. DICIGetVolTypeInfoRec    RECORD 0
  496. volSize                     ds.l    1                ; offset: $0 (0)        ;  size of volume in SECTORs 
  497. sectorSize                 ds.w    1                ; offset: $4 (4)        ;  bytes per sector 
  498. numVolTypes                 ds.w    1                ; offset: $6 (6)        ;  number of volume types supported 
  499. volTypesBuffer             ds.b    4 * Str31.sizeof ; offset: $8 (8)        ;  4 string buffers 
  500. sizeof                     EQU *                    ; size:   $88 (136)
  501.                         ENDR
  502. ; typedef struct DICIGetVolTypeInfoRec * DICIGetVolTypeInfoRecPtr
  503.  
  504. ; * paramBlock for the diCIGetFormatString call
  505.  
  506. DICIGetFormatStringRec    RECORD 0
  507. volSize                     ds.l    1                ; offset: $0 (0)        ;  volume size in SECTORs 
  508. sectorSize                 ds.w    1                ; offset: $4 (4)        ;  sector size 
  509. volTypeSelector             ds.w    1                ; offset: $6 (6)        ;  volume type selector 
  510. stringKind                 ds.w    1                ; offset: $8 (8)        ;  sub-function = type of string 
  511. stringBuffer             ds        Str255            ; offset: $A (10)        ;  string buffer 
  512. sizeof                     EQU *                    ; size:   $10A (266)
  513.                         ENDR
  514. ; typedef struct DICIGetFormatStringRec * DICIGetFormatStringRecPtr
  515.  
  516. ; * paramBlock for the diCIGetExtendedFormatParams call
  517.  
  518. DICIGetExtendedFormatRec RECORD 0
  519. driveNumber                 ds.w    1                ; offset: $0 (0)        ;  drive number 
  520. volTypeSelector             ds.w    1                ; offset: $2 (2)        ;  volume type selector or 0 
  521. volSize                     ds.l    1                ; offset: $4 (4)        ;  size of volume in SECTORs 
  522. sectorSize                 ds.w    1                ; offset: $8 (8)        ;  bytes per sector 
  523. fileSystemSpecPtr         ds.l    1                ; offset: $A (10)        ;  pointer to the foreign file system's FSSpec 
  524. extendedInfoPtr             ds.l    1                ; offset: $E (14)        ;  pointer to extended parameter structure 
  525. sizeof                     EQU *                    ; size:   $12 (18)
  526.                         ENDR
  527. ; typedef struct DICIGetExtendedFormatRec * DICIGetExtendedFormatRecPtr
  528.  
  529. ; *    File System Manager records
  530.  
  531.  
  532.  
  533.  
  534. FSDRec                    RECORD 0
  535. fsdLink                     ds.l    1                ; offset: $0 (0)        ;  ptr to next 
  536. fsdLength                 ds.w    1                ; offset: $4 (4)        ;  length of this FSD in BYTES 
  537. fsdVersion                 ds.w    1                ; offset: $6 (6)        ;  version number 
  538. fileSystemFSID             ds.w    1                ; offset: $8 (8)        ;  file system id 
  539. fileSystemName             ds        Str31            ; offset: $A (10)        ;  file system name 
  540. fileSystemSpec             ds        FSSpec            ; offset: $2A (42)        ;  foreign file system's FSSpec 
  541. fileSystemGlobalsPtr     ds.l    1                ; offset: $70 (112)        ;  ptr to file system globals 
  542. fileSystemCommProc         ds.l    1                ; offset: $74 (116)        ;  communication proc with the FFS 
  543. reserved3                 ds.l    1                ; offset: $78 (120)        ;  --reserved, must be zero-- 
  544. reserved2                 ds.l    1                ; offset: $7C (124)        ;  --reserved, must be zero-- 
  545. reserved1                 ds.l    1                ; offset: $80 (128)        ;  --reserved, must be zero-- 
  546. fsdHFSCI                 ds        HFSCIRec        ; offset: $84 (132)        ;  HFS component interface    
  547. fsdDICI                     ds        DICIRec            ; offset: $AC (172)        ;  Disk Initialization component interface 
  548. sizeof                     EQU *                    ; size:   $C4 (196)
  549.                         ENDR
  550. ; typedef struct FSDRec *                FSDRecPtr
  551.  
  552. FSMGetIconInfoRec        RECORD 0
  553. theIcon                     ds.l    32                ; offset: $0 (0)        ;  The ICN# structure 
  554. theMask                     ds.l    32                ; offset: $80 (128)        ;  The mask for the icon above 
  555. whereStr                 ds        Str255            ; offset: $100 (256)
  556. sizeof                     EQU *                    ; size:   $200 (512)
  557.                         ENDR
  558. ; typedef struct FSMGetIconInfoRec *    FSMGetIconInfoRecPtr
  559.  
  560. ; * paramBlock for ffsGetIconMessage and fsmGetFSIconMessage
  561.  
  562. FSMGetIconRec            RECORD 0
  563. refNum                     ds.w    1                ; offset: $0 (0)        ;  target drive num or volume refnum 
  564. iconBufferPtr             ds.l    1                ; offset: $2 (2)        ;  pointer to icon buffer 
  565. requestSize                 ds.l    1                ; offset: $6 (6)        ;  requested size of the icon buffer 
  566. actualSize                 ds.l    1                ; offset: $A (10)        ;  actual size of the icon data returned 
  567. iconType                 ds.b    1                ; offset: $E (14)        ;  kind of icon 
  568. isEjectable                 ds.b    1                ; offset: $F (15)        ;  true if the device is ejectable 
  569. driveQElemPtr             ds.l    1                ; offset: $10 (16)        ;  pointer to DQE 
  570. fileSystemSpecPtr         ds.l    1                ; offset: $14 (20)        ;  pointer to foreign file system's FSSpec 
  571. reserved1                 ds.l    1                ; offset: $18 (24)        ;  --reserved, must be zero-- 
  572. sizeof                     EQU *                    ; size:   $1C (28)
  573.                         ENDR
  574. ; typedef struct FSMGetIconRec *        FSMGetIconRecPtr
  575.  
  576. ; *    HFS Utility routine prototypes
  577.  
  578. ;
  579. ; pascal OSErr UTAllocateFCB(short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  580. ;
  581.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  582.         Macro
  583.         _UTAllocateFCB
  584.             moveq               #0,D0
  585.             dc.w                $A824
  586.         EndM
  587.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  588.         IMPORT_CFM_FUNCTION UTAllocateFCB
  589.     ENDIF
  590.  
  591. ;
  592. ; pascal OSErr UTReleaseFCB(short fileRefNum)
  593. ;
  594.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  595.         Macro
  596.         _UTReleaseFCB
  597.             moveq               #1,D0
  598.             dc.w                $A824
  599.         EndM
  600.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  601.         IMPORT_CFM_FUNCTION UTReleaseFCB
  602.     ENDIF
  603.  
  604. ;
  605. ; pascal OSErr UTLocateFCB(VCBPtr volCtrlBlockPtr, unsigned long fileNum, StringPtr namePtr, short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  606. ;
  607.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  608.         Macro
  609.         _UTLocateFCB
  610.             moveq               #2,D0
  611.             dc.w                $A824
  612.         EndM
  613.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  614.         IMPORT_CFM_FUNCTION UTLocateFCB
  615.     ENDIF
  616.  
  617. ;
  618. ; pascal OSErr UTLocateNextFCB(VCBPtr volCtrlBlockPtr, unsigned long fileNum, StringPtr namePtr, short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  619. ;
  620.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  621.         Macro
  622.         _UTLocateNextFCB
  623.             moveq               #3,D0
  624.             dc.w                $A824
  625.         EndM
  626.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  627.         IMPORT_CFM_FUNCTION UTLocateNextFCB
  628.     ENDIF
  629.  
  630. ;
  631. ; pascal OSErr UTIndexFCB(VCBPtr volCtrlBlockPtr, short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  632. ;
  633.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  634.         Macro
  635.         _UTIndexFCB
  636.             moveq               #4,D0
  637.             dc.w                $A824
  638.         EndM
  639.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  640.         IMPORT_CFM_FUNCTION UTIndexFCB
  641.     ENDIF
  642.  
  643. ;
  644. ; pascal OSErr UTResolveFCB(short fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  645. ;
  646.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  647.         Macro
  648.         _UTResolveFCB
  649.             moveq               #5,D0
  650.             dc.w                $A824
  651.         EndM
  652.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  653.         IMPORT_CFM_FUNCTION UTResolveFCB
  654.     ENDIF
  655.  
  656. ;
  657. ; pascal OSErr UTAllocateVCB(unsigned short *sysVCBLength, VCBPtr *volCtrlBlockPtr, unsigned short addSize)
  658. ;
  659.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  660.         Macro
  661.         _UTAllocateVCB
  662.             moveq               #6,D0
  663.             dc.w                $A824
  664.         EndM
  665.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  666.         IMPORT_CFM_FUNCTION UTAllocateVCB
  667.     ENDIF
  668.  
  669. ;
  670. ; pascal OSErr UTAddNewVCB(short driveNum, short *vRefNum, VCBPtr volCtrlBlockPtr)
  671. ;
  672.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  673.         Macro
  674.         _UTAddNewVCB
  675.             moveq               #7,D0
  676.             dc.w                $A824
  677.         EndM
  678.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  679.         IMPORT_CFM_FUNCTION UTAddNewVCB
  680.     ENDIF
  681.  
  682. ;
  683. ; pascal OSErr UTDisposeVCB(VCBPtr volCtrlBlockPtr)
  684. ;
  685.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  686.         Macro
  687.         _UTDisposeVCB
  688.             moveq               #8,D0
  689.             dc.w                $A824
  690.         EndM
  691.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  692.         IMPORT_CFM_FUNCTION UTDisposeVCB
  693.     ENDIF
  694.  
  695. ;
  696. ; pascal OSErr UTLocateVCBByRefNum(short refNum, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  697. ;
  698.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  699.         Macro
  700.         _UTLocateVCBByRefNum
  701.             moveq               #9,D0
  702.             dc.w                $A824
  703.         EndM
  704.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  705.         IMPORT_CFM_FUNCTION UTLocateVCBByRefNum
  706.     ENDIF
  707.  
  708. ;
  709. ; pascal OSErr UTLocateVCBByName(StringPtr namePtr, short *moreMatches, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  710. ;
  711.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  712.         Macro
  713.         _UTLocateVCBByName
  714.             moveq               #10,D0
  715.             dc.w                $A824
  716.         EndM
  717.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  718.         IMPORT_CFM_FUNCTION UTLocateVCBByName
  719.     ENDIF
  720.  
  721. ;
  722. ; pascal OSErr UTLocateNextVCB(StringPtr namePtr, short *moreMatches, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  723. ;
  724.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  725.         Macro
  726.         _UTLocateNextVCB
  727.             moveq               #11,D0
  728.             dc.w                $A824
  729.         EndM
  730.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  731.         IMPORT_CFM_FUNCTION UTLocateNextVCB
  732.     ENDIF
  733.  
  734. ;
  735. ; pascal OSErr UTAllocateWDCB(WDPBPtr paramBlock)
  736. ;
  737.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  738.         Macro
  739.         _UTAllocateWDCB
  740.             moveq               #12,D0
  741.             dc.w                $A824
  742.         EndM
  743.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  744.         IMPORT_CFM_FUNCTION UTAllocateWDCB
  745.     ENDIF
  746.  
  747. ;
  748. ; pascal OSErr UTReleaseWDCB(short wdRefNum)
  749. ;
  750.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  751.         Macro
  752.         _UTReleaseWDCB
  753.             moveq               #13,D0
  754.             dc.w                $A824
  755.         EndM
  756.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  757.         IMPORT_CFM_FUNCTION UTReleaseWDCB
  758.     ENDIF
  759.  
  760. ;
  761. ; pascal OSErr UTResolveWDCB(long procID, short wdIndex, short wdRefNum, WDCBRecPtr *wdCtrlBlockPtr)
  762. ;
  763.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  764.         Macro
  765.         _UTResolveWDCB
  766.             moveq               #14,D0
  767.             dc.w                $A824
  768.         EndM
  769.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  770.         IMPORT_CFM_FUNCTION UTResolveWDCB
  771.     ENDIF
  772.  
  773. ;
  774. ; pascal OSErr UTFindDrive(short driveNum, DrvQElPtr *driveQElementPtr)
  775. ;
  776.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  777.         Macro
  778.         _UTFindDrive
  779.             moveq               #15,D0
  780.             dc.w                $A824
  781.         EndM
  782.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  783.         IMPORT_CFM_FUNCTION UTFindDrive
  784.     ENDIF
  785.  
  786. ;
  787. ; pascal OSErr UTAdjustEOF(short fileRefNum)
  788. ;
  789.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  790.         Macro
  791.         _UTAdjustEOF
  792.             moveq               #16,D0
  793.             dc.w                $A824
  794.         EndM
  795.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  796.         IMPORT_CFM_FUNCTION UTAdjustEOF
  797.     ENDIF
  798.  
  799. ;
  800. ; pascal OSErr UTSetDefaultVol(long nodeHint, unsigned long dirID, short refNum)
  801. ;
  802.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  803.         Macro
  804.         _UTSetDefaultVol
  805.             moveq               #17,D0
  806.             dc.w                $A824
  807.         EndM
  808.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  809.         IMPORT_CFM_FUNCTION UTSetDefaultVol
  810.     ENDIF
  811.  
  812. ;
  813. ; pascal OSErr UTGetDefaultVol(WDPBPtr paramBlock)
  814. ;
  815.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  816.         Macro
  817.         _UTGetDefaultVol
  818.             moveq               #18,D0
  819.             dc.w                $A824
  820.         EndM
  821.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  822.         IMPORT_CFM_FUNCTION UTGetDefaultVol
  823.     ENDIF
  824.  
  825. ;
  826. ; pascal OSErr UTEjectVol(VCBPtr volCtrlBlockPtr)
  827. ;
  828.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  829.         Macro
  830.         _UTEjectVol
  831.             moveq               #43,D0
  832.             dc.w                $A824
  833.         EndM
  834.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  835.         IMPORT_CFM_FUNCTION UTEjectVol
  836.     ENDIF
  837.  
  838. ;
  839. ; pascal OSErr UTCheckWDRefNum(short wdRefNum)
  840. ;
  841.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  842.         Macro
  843.         _UTCheckWDRefNum
  844.             moveq               #19,D0
  845.             dc.w                $A824
  846.         EndM
  847.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  848.         IMPORT_CFM_FUNCTION UTCheckWDRefNum
  849.     ENDIF
  850.  
  851. ;
  852. ; pascal OSErr UTCheckFileRefNum(short fileRefNum)
  853. ;
  854.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  855.         Macro
  856.         _UTCheckFileRefNum
  857.             moveq               #20,D0
  858.             dc.w                $A824
  859.         EndM
  860.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  861.         IMPORT_CFM_FUNCTION UTCheckFileRefNum
  862.     ENDIF
  863.  
  864. ;
  865. ; pascal OSErr UTCheckVolRefNum(short vRefNum)
  866. ;
  867.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  868.         Macro
  869.         _UTCheckVolRefNum
  870.             moveq               #21,D0
  871.             dc.w                $A824
  872.         EndM
  873.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  874.         IMPORT_CFM_FUNCTION UTCheckVolRefNum
  875.     ENDIF
  876.  
  877. ;
  878. ; pascal OSErr UTCheckPermission(VCBPtr volCtrlBlockPtr, short *modByte, unsigned long fileNum, ParmBlkPtr paramBlock)
  879. ;
  880.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  881.         Macro
  882.         _UTCheckPermission
  883.             moveq               #22,D0
  884.             dc.w                $A824
  885.         EndM
  886.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  887.         IMPORT_CFM_FUNCTION UTCheckPermission
  888.     ENDIF
  889.  
  890. ;
  891. ; pascal OSErr UTCheckVolOffline(short vRefNum)
  892. ;
  893.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  894.         Macro
  895.         _UTCheckVolOffline
  896.             moveq               #23,D0
  897.             dc.w                $A824
  898.         EndM
  899.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  900.         IMPORT_CFM_FUNCTION UTCheckVolOffline
  901.     ENDIF
  902.  
  903. ;
  904. ; pascal OSErr UTCheckVolModifiable(short vRefNum)
  905. ;
  906.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  907.         Macro
  908.         _UTCheckVolModifiable
  909.             moveq               #24,D0
  910.             dc.w                $A824
  911.         EndM
  912.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  913.         IMPORT_CFM_FUNCTION UTCheckVolModifiable
  914.     ENDIF
  915.  
  916. ;
  917. ; pascal OSErr UTCheckFileModifiable(short fileRefNum)
  918. ;
  919.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  920.         Macro
  921.         _UTCheckFileModifiable
  922.             moveq               #25,D0
  923.             dc.w                $A824
  924.         EndM
  925.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  926.         IMPORT_CFM_FUNCTION UTCheckFileModifiable
  927.     ENDIF
  928.  
  929. ;
  930. ; pascal OSErr UTCheckDirBusy(VCBPtr volCtrlBlockPtr, unsigned long dirID)
  931. ;
  932.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  933.         Macro
  934.         _UTCheckDirBusy
  935.             moveq               #26,D0
  936.             dc.w                $A824
  937.         EndM
  938.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  939.         IMPORT_CFM_FUNCTION UTCheckDirBusy
  940.     ENDIF
  941.  
  942. ;
  943. ; pascal OSErr UTParsePathname(short *volNamelength, StringPtr namePtr)
  944. ;
  945.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  946.         Macro
  947.         _UTParsePathname
  948.             moveq               #27,D0
  949.             dc.w                $A824
  950.         EndM
  951.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  952.         IMPORT_CFM_FUNCTION UTParsePathname
  953.     ENDIF
  954.  
  955. ;
  956. ; pascal OSErr UTGetPathComponentName(ParsePathRecPtr parseRec)
  957. ;
  958.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  959.         Macro
  960.         _UTGetPathComponentName
  961.             moveq               #28,D0
  962.             dc.w                $A824
  963.         EndM
  964.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  965.         IMPORT_CFM_FUNCTION UTGetPathComponentName
  966.     ENDIF
  967.  
  968. ;
  969. ; pascal OSErr UTDetermineVol(ParmBlkPtr paramBlock, short *status, short *moreMatches, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  970. ;
  971.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  972.         Macro
  973.         _UTDetermineVol
  974.             moveq               #29,D0
  975.             dc.w                $A824
  976.         EndM
  977.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  978.         IMPORT_CFM_FUNCTION UTDetermineVol
  979.     ENDIF
  980.  
  981. ;
  982. ; pascal OSErr UTGetBlock(short refNum, void *log2PhyProc, unsigned long blockNum, short gbOption, Ptr *buffer)
  983. ;
  984.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  985.         Macro
  986.         _UTGetBlock
  987.             moveq               #31,D0
  988.             dc.w                $A824
  989.         EndM
  990.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  991.         IMPORT_CFM_FUNCTION UTGetBlock
  992.     ENDIF
  993.  
  994. ;
  995. ; pascal OSErr UTReleaseBlock(Ptr buffer, short rbOption)
  996. ;
  997.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  998.         Macro
  999.         _UTReleaseBlock
  1000.             moveq               #32,D0
  1001.             dc.w                $A824
  1002.         EndM
  1003.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1004.         IMPORT_CFM_FUNCTION UTReleaseBlock
  1005.     ENDIF
  1006.  
  1007. ;
  1008. ; pascal OSErr UTFlushCache(short refNum, short fcOption)
  1009. ;
  1010.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1011.         Macro
  1012.         _UTFlushCache
  1013.             moveq               #33,D0
  1014.             dc.w                $A824
  1015.         EndM
  1016.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1017.         IMPORT_CFM_FUNCTION UTFlushCache
  1018.     ENDIF
  1019.  
  1020. ;
  1021. ; pascal OSErr UTMarkDirty(Ptr buffer)
  1022. ;
  1023.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1024.         Macro
  1025.         _UTMarkDirty
  1026.             moveq               #35,D0
  1027.             dc.w                $A824
  1028.         EndM
  1029.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1030.         IMPORT_CFM_FUNCTION UTMarkDirty
  1031.     ENDIF
  1032.  
  1033. ;
  1034. ; pascal OSErr UTTrashVolBlocks(VCBPtr volCtrlBlockPtr)
  1035. ;
  1036.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1037.         Macro
  1038.         _UTTrashVolBlocks
  1039.             moveq               #36,D0
  1040.             dc.w                $A824
  1041.         EndM
  1042.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1043.         IMPORT_CFM_FUNCTION UTTrashVolBlocks
  1044.     ENDIF
  1045.  
  1046. ;
  1047. ; pascal OSErr UTTrashFileBlocks(VCBPtr volCtrlBlockPtr, unsigned long fileNum)
  1048. ;
  1049.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1050.         Macro
  1051.         _UTTrashFileBlocks
  1052.             moveq               #37,D0
  1053.             dc.w                $A824
  1054.         EndM
  1055.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1056.         IMPORT_CFM_FUNCTION UTTrashFileBlocks
  1057.     ENDIF
  1058.  
  1059. ;
  1060. ; pascal OSErr UTTrashBlocks(unsigned long beginPosition, unsigned long byteCount, VCBPtr volCtrlBlockPtr, short fileRefNum, short tbOption)
  1061. ;
  1062.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1063.         Macro
  1064.         _UTTrashBlocks
  1065.             moveq               #38,D0
  1066.             dc.w                $A824
  1067.         EndM
  1068.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1069.         IMPORT_CFM_FUNCTION UTTrashBlocks
  1070.     ENDIF
  1071.  
  1072. ;
  1073. ; pascal OSErr UTCacheReadIP(void *log2PhyProc, unsigned long filePosition, Ptr ioBuffer, short fileRefNum, unsigned long reqCount, unsigned long *actCount, short cacheOption)
  1074. ;
  1075.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1076.         Macro
  1077.         _UTCacheReadIP
  1078.             moveq               #39,D0
  1079.             dc.w                $A824
  1080.         EndM
  1081.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1082.         IMPORT_CFM_FUNCTION UTCacheReadIP
  1083.     ENDIF
  1084.  
  1085. ;
  1086. ; pascal OSErr UTCacheWriteIP(void *log2PhyProc, unsigned long filePosition, Ptr ioBuffer, short fileRefNum, unsigned long reqCount, unsigned long *actCount, short cacheOption)
  1087. ;
  1088.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1089.         Macro
  1090.         _UTCacheWriteIP
  1091.             moveq               #40,D0
  1092.             dc.w                $A824
  1093.         EndM
  1094.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1095.         IMPORT_CFM_FUNCTION UTCacheWriteIP
  1096.     ENDIF
  1097.  
  1098. ;
  1099. ; pascal OSErr UTBlockInFQHashP(short vRefNum, unsigned long diskBlock)
  1100. ;
  1101.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1102.         Macro
  1103.         _UTBlockInFQHashP
  1104.             moveq               #44,D0
  1105.             dc.w                $A824
  1106.         EndM
  1107.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1108.         IMPORT_CFM_FUNCTION UTBlockInFQHashP
  1109.     ENDIF
  1110.  
  1111. ;
  1112. ; pascal OSErr UTVolCacheReadIP(VCBPtr volCtrlBlockPtr, unsigned long blockPosition, Ptr ioBuffer, unsigned long reqCount, unsigned long *actCount, short cacheOption)
  1113. ;
  1114.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1115.         Macro
  1116.         _UTVolCacheReadIP
  1117.             moveq               #52,D0
  1118.             dc.w                $A824
  1119.         EndM
  1120.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1121.         IMPORT_CFM_FUNCTION UTVolCacheReadIP
  1122.     ENDIF
  1123.  
  1124. ;
  1125. ; pascal OSErr UTVolCacheWriteIP(VCBPtr volCtrlBlockPtr, unsigned long blockPosition, Ptr ioBuffer, unsigned long reqCount, unsigned long *actCount, short cacheOption)
  1126. ;
  1127.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1128.         Macro
  1129.         _UTVolCacheWriteIP
  1130.             moveq               #53,D0
  1131.             dc.w                $A824
  1132.         EndM
  1133.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1134.         IMPORT_CFM_FUNCTION UTVolCacheWriteIP
  1135.     ENDIF
  1136.  
  1137.  
  1138.  
  1139. ; *    File System Manager call prototypes
  1140.  
  1141. ;
  1142. ; pascal OSErr InstallFS(FSDRecPtr fsdPtr)
  1143. ;
  1144.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1145.         IMPORT_CFM_FUNCTION InstallFS
  1146.     ENDIF
  1147.  
  1148. ;
  1149. ; pascal OSErr RemoveFS(short fsid)
  1150. ;
  1151.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1152.         IMPORT_CFM_FUNCTION RemoveFS
  1153.     ENDIF
  1154.  
  1155. ;
  1156. ; pascal OSErr SetFSInfo(short fsid, short bufSize, FSDRecPtr fsdPtr)
  1157. ;
  1158.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1159.         IMPORT_CFM_FUNCTION SetFSInfo
  1160.     ENDIF
  1161.  
  1162. ;
  1163. ; pascal OSErr GetFSInfo(short selector, short key, short *bufSize, FSDRecPtr fsdPtr)
  1164. ;
  1165.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1166.         IMPORT_CFM_FUNCTION GetFSInfo
  1167.     ENDIF
  1168.  
  1169. ;
  1170. ; pascal OSErr InformFSM(short theMessage, void *paramBlock)
  1171. ;
  1172.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1173.         IMPORT_CFM_FUNCTION InformFSM
  1174.     ENDIF
  1175.  
  1176. ;
  1177. ; pascal OSErr InformFFS(short fsid, void *paramBlock)
  1178. ;
  1179.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1180.         IMPORT_CFM_FUNCTION InformFFS
  1181.     ENDIF
  1182.  
  1183.  
  1184.  
  1185.     ENDIF ; __FSM__ 
  1186.  
  1187.